package com.selune.online.ordering.system.project.api.service.user;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.selune.online.ordering.system.project.api.base.response.Response;
import com.selune.online.ordering.system.project.api.pojo.user.customer.dto.CustomerUserSearchDTO;
import com.selune.online.ordering.system.project.api.pojo.user.customer.vo.CustomerUserInfoVO;
import com.selune.online.ordering.system.project.api.pojo.user.tenant.vo.TenantUserInfoVO;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 *
 * @author xiaoyp
 * @date 2020/3/23
 * <p>
 * Description:
 */
public interface IUserManageService {
	
	/* --------------- 这是消费者接口 --------------- */
	
	/**
	 * 根据用户名查找消费者用户
	 *
	 * @param userName 消费者用户名
	 * @return 用户信息
	 */
	Response<CustomerUserInfoVO> selectOneCustomerUser(String userName);
	
	/**
	 * 查询所有消费者用户
	 *
	 * @param customerUserSearchDTO 搜索条件
	 * @return 所有消费者用户
	 */
	Response<List<CustomerUserInfoVO>> selectAllCustomerUser(CustomerUserSearchDTO customerUserSearchDTO);
	
	/**
	 * 消费者用户分页
	 *
	 * @param current               页码
	 * @param size                  每页大小
	 * @param customerUserSearchDTO 搜索条件
	 * @return 消费者用户分页
	 */
	Response<Page<CustomerUserInfoVO>> pageAllCustomerUser(Integer current, Integer size,
	                                                       CustomerUserSearchDTO customerUserSearchDTO);
	
	/**
	 * 删除消费者用户
	 *
	 * @param userId 消费者用户id
	 * @return True/False
	 */
	Response<Boolean> deleteCustomerUserById(Long userId);
	
	/**
	 * 批量消费者删除用户
	 *
	 * @param userIds 消费者用户ids
	 * @return True/False
	 */
	Response<Boolean> deleteCustomerUserByIds(List<Long> userIds);
	
	/* --------------- 这是分割线 --------------- */
	
	/**
	 * 根据用户名查找商户用户
	 *
	 * @param tenantName 用户名
	 * @return 商户用户信息
	 */
	Response<TenantUserInfoVO> selectOneTenantUser(String tenantName);
	
	/**
	 * 查询所有商户用户
	 *
	 * @return 所有商户用户
	 */
	Response<List<TenantUserInfoVO>> selectAllTenantUser();
	
	/**
	 * 商户用户分页
	 *
	 * @param current 页码
	 * @param size    每页大小
	 * @return 所有商户用户分页
	 */
	Response<Page<TenantUserInfoVO>> pageAllTenantUser(Integer current, Integer size);
	
	/**
	 * 删除商户用户
	 *
	 * @param tenantId 商户用户id
	 * @return True/False
	 */
	Response<Boolean> deleteTenantUserById(Long tenantId);
	
	/**
	 * 批量删除商户用户
	 *
	 * @param tenantIds 商户用户id
	 * @return True/False
	 */
	Response<Boolean> deleteTenantUserByIds(List<Long> tenantIds);
	
	/* --------------- 这是商户接口 --------------- */
}
